/**
/* osgGIS - GIS Library for OpenSceneGraph
 * Copyright 2007-2008 Glenn Waldron and Pelican Ventures, Inc.
 * http://osggis.org
 *
 * osgGIS is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 */

#include <osgGIS/SpatialReference>
#include <osgGIS/GeoPoint>
#include <osgGIS/GeoShape>

using namespace osgGIS;

bool
SpatialReference::equivalent(const SpatialReference* lhs,
                             const SpatialReference* rhs )
{
    if ( lhs == rhs ) return true;
    if ( lhs == NULL || rhs == NULL ) return false;
    return lhs->equivalentTo( rhs );
}


void
SpatialReference::applyTo( GeoPoint& p ) const
{
    p.setSpatialReference( this );
}


void
SpatialReference::applyTo( GeoShape& s ) const
{
    s.setSpatialReference( this );
}


osg::Vec3d
SpatialReference::getUpVector( const osg::Vec3d& point ) const
{
    osg::Vec3d v = isGeocentric()?
        point * getInverseReferenceFrame() :
        osg::Vec3d(0,0,1) * getInverseReferenceFrame();

    v.normalize();
    return v;
}

